    package com.example.demo.controller;


    import com.example.demo.Server.LoginServer;
    import com.example.demo.Server.UserServer;
    import com.example.demo.entity.User;
    import com.example.demo.result.Result;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.http.HttpStatus;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.multipart.MultipartFile;

    import javax.servlet.http.HttpServletRequest;
    import java.io.IOException;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.text.SimpleDateFormat;
    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;


    @Slf4j
    @RestController
    public class User_Controller {

        @Autowired
        private LoginServer loginServer;
        @Autowired
        private UserServer userServer;

        @PostMapping("/User_updata")
        public Result updata(@RequestBody User user)
        {
            int register = loginServer.updata(user);
            if(register == 0){
                return Result.error("更新失败");
            }

            return  Result.success();
        }


        // 在 User_Controller 中添加
        @PostMapping("/User_get_attachment")
        @ResponseBody
        public Result getUserAttachment(@RequestBody Map<String, Object> requestData) {
            try {
                Integer userId = (Integer) requestData.get("userId");
                if (userId == null) {
                    return Result.error("用户ID不能为空");
                }

                // 查询用户附件地址
                String attachmentPath = userServer.Select_Attachments(userId);

                // 处理空值情况
                if (attachmentPath == null || attachmentPath.isEmpty()) {
                    attachmentPath = ""; // 或者保持为null，前端做相应处理
                }

                Map<String, Object> data = new HashMap<>();
                data.put("userId", userId);
                data.put("attachments", attachmentPath);

                return Result.success(data);
            } catch (Exception e) {
                return Result.error("查询失败: " + e.getMessage());
            }
        }

        /**
         * 接收用户上传简历文件的 POST 请求
         * 请求路径：/User_updata_resume
         *
         * @param file   上传的文件，类型为 MultipartFile
         * @param userId 用户的唯一标识（用户ID）
         * @return ResponseEntity<Map<String, Object>> 返回统一格式的响应结果
         */
        @PostMapping("/User_updata_resume")
        public ResponseEntity<Map<String, Object>> uploadUserResume(
                @RequestParam("file") MultipartFile file,
                @RequestParam("userId") Integer userId,
                @RequestParam("name") String name) {

            // 创建响应数据容器
            Map<String, Object> response = new HashMap<>();

            try {
                // 验证文件和用户ID是否为空
                if (file.isEmpty() || userId == null) {
                    response.put("code", 0);  // 0 表示操作失败
                    response.put("msg", "文件或用户ID不能为空");
                    return ResponseEntity.badRequest().body(response);  // 返回 400 错误
                }

                // 获取原始文件名，用于生成新文件名
                String originalFilename = file.getOriginalFilename();
                String extension = "";
                // 提取文件扩展名（如 .pdf、.docx）
                if (originalFilename != null && originalFilename.contains(".")) {
                    extension = originalFilename.substring(originalFilename.lastIndexOf("."));
                }

                // 生成新的文件名：userId_user_时间戳.扩展名
                String newFilename = name + "_" + userId + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy_MM_dd")) + extension;
                // 定义上传文件的存储目录
                String uploadDir = "D:\\bi_she\\file\\";
                Path uploadPath = Paths.get(uploadDir);  // 转换为 Path 对象


                // 如果目录不存在，则创建目录
                if (!Files.exists(uploadPath)) {
                    Files.createDirectories(uploadPath);
                }

                // 构造完整的文件路径
                Path filePath = uploadPath.resolve(newFilename);
                String s = filePath.toString();
                User s1 = new User();
                s1.setAttachments(s);
                s1.setUserID(userId);
                userServer.Updata_Attachments(s1);
                // 将上传的文件写入磁盘
                Files.write(filePath, file.getBytes());

                // 构建返回的用户数据
                Map<String, Object> userData = new HashMap<>();
                userData.put("userID", userId);  // 用户ID
                userData.put("attachments", "D:\\bi_she\\file\\" + newFilename);  // 文件存储路径

                // 设置响应状态为成功
                response.put("code", 1);  // 1 表示操作成功
                response.put("msg", null);  // 无错误信息
                response.put("data", userData);  // 返回用户数据

                // 返回成功响应（HTTP 200）
                return ResponseEntity.ok(response);

            } catch (Exception e) {
                // 打印异常堆栈信息
                e.printStackTrace();

                // 设置失败响应信息
                response.put("code", 0);  // 0 表示操作失败
                response.put("msg", "上传失败: " + e.getMessage());  // 异常信息

                // 返回服务器内部错误（HTTP 500）
                return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response);
            }
        }


        @GetMapping("/user/list")
        public Result<ArrayList<User>> list() {
            log.info("list");
            ArrayList<User> list = userServer.list();
            return Result.success(list);
        }



    }
